#pragma once
#include "common_tool/factory.h"
#include "tire_model_base.hpp"
#include "brush_model.h"

namespace auto_ros
{
namespace control
{
template <class derived>
TireModelBase *createTireDerived(auto_ros::common_tool::double_map parm)
{
	return new derived(parm);
}
using tire_model_factory_type =
	auto_ros::common_tool::Factory<std::string, TireModelBase, TireModelBase *(*)(auto_ros::common_tool::double_map parm)>;
class TireModelFactory : public tire_model_factory_type
{
private:
	/* data */
public:
	TireModelFactory()
	{
		Register("BrushModel", createTireDerived<BrushModel>);
	}
};
} // namespace control
} // namespace auto_ros
